package delphorm.service.personne;

import java.util.List;

import delphorm.entite.personne.Utilisateur;
import delphorm.service.exception.ServiceException;

/**
 * @author jerome
 * 
 */
public interface IPersonne {
	/**
	 * @param u
	 *            Utilisateur à enregistrer
	 * @return L'utilisateur enregistré
	 */
	public Utilisateur enregistrerUtilisateur(Utilisateur u);

	/**
	 * Enregistrer les informations de l'utilisateur
	 * 
	 * @param u
	 *            Utilisateur dont on souhaite sauvegarder les modifications
	 * @return L'utilisateur mis à jour
	 * @throws ServiceException
	 *             Si l'utilisateur n'a pas d'id
	 */
	public Utilisateur editerUtilisateur(Utilisateur u) throws ServiceException;

	/**
	 * Vérifie la concordance login + mdp
	 * 
	 * @param u
	 *            Utilisateur à vérifier
	 * @return L'utilisateur identifié ou null si non identifiable
	 */
	public Utilisateur identifierUtilisateur(Utilisateur u);

	/**
	 * Retourne la liste des utilisateurs
	 * 
	 * @param typeTri
	 *            Critère de tri
	 * @return La listre des utilisateurs triée
	 */
	public List<Utilisateur> listerUtilisateurs(String typeTri);

	/**
	 * @param id
	 *            Identifiant de l'utilisateur à rechercher
	 * @return L'utilisateur cherché ou null.
	 */
	public Utilisateur chercherUtilisateurParId(Long id);

	/**
	 * @param id
	 *            Identifiant de l'utilisateur à supprimer
	 */
	public void supprimerUtilisateurParId(Long id);

	/**
	 * Recherche si le logi passé en paramètre existe déjà
	 * 
	 * @param login
	 *            Login à rechercher
	 * @return true s'ile existe, false sinon
	 */
	public boolean existeParLogin(String login);

	/**
	 * @param login
	 *            Login de l'utilisateur à rechercher
	 * @return L'utilisateur trouvé ou null
	 */
	public Utilisateur chercherUtilisateurParLogin(String login);

}
